﻿using System;
using System.Data;
using System.Text;
using AccesoDatos.DTO.Base;
using System.Runtime.Serialization;


namespace AccesoDatos.DTO
{
    [DataContract]
    public class PersonaDTO :IDTO
    {

        #region Campos

        /// <summary>
        /// Define el codigo de la persona
        /// </summary>
        private int? coPersona;

        /// <summary>
        /// Define las aficiones
        /// </summary>
        private string aficiones;

        /// <summary>
        /// Define la frase asociada a la persona
        /// </summary>
        private string frase;

        //TODO: ESTO ME HACE FALTA;?=?!??!?!
        /// <summary>
        /// DEfine un campo auxiliar
        /// </summary>
        private string propio;

        /// <summary>
        /// Define el nivel de usuario que tiene la persona
        /// </summary>
        private int? coNivel;

        /// <summary>
        /// Define el alias o nick que empleara la persona en la aplicacion
        /// </summary>
        private string nick;

        /// <summary>
        /// Define la fecha de la ultima conexion
        /// </summary>
        private DateTime? ultimaConexion;

        /// <summary>
        /// Define la ruta de la imagen asociada al usuario
        /// </summary>
        private byte[] imagen;

        /// <summary>
        /// Cadena que almacenara la encriptacion de la contraseña
        /// </summary>
        private string userhash;

        /// <summary>
        /// Definicion del nombre
        /// </summary>
        private string nombre;

        /// <summary>
        /// Definicion del primer apellido
        /// </summary>
        private string apellido1;

        /// <summary>
        /// Definicion del segundo apellido
        /// </summary>
        private string apellido2;

        /// <summary>
        /// Definicion del email
        /// </summary>
        private string email;

        /// <summary>
        /// Definicion de la fecha de nacimiento
        /// </summary>
        private DateTime? fechaNacimiento;

        /// <summary>
        /// Definicion del dni de la persona
        /// </summary>
        private string dni;

        /// <summary>
        /// Definicion del codifgo unico de la persona
        /// </summary>
        private int? coProfesor;


        /// <summary>
        /// Definicion del administrador
        /// </summary>
        private int? esAdministrador;

        /// <summary>
        /// Defincio del nombre de la imagen
        /// </summary>
        private string nombreImagen;


        private int? coAlumno;


        #endregion

        #region Propiedades

        /// <summary>
        /// Obtiene o establece el codigo de persona
        /// </summary>
        [DataMember] 
        public int? CoPersona 
        {
            get { return coPersona; }
            set { coPersona = value; }
        }

        /// <summary>
        /// Obtiene o establece las aficiones
        /// </summary>
        [DataMember] 
        public string Aficiones 
        {
            get { return aficiones; }
            set { aficiones = value; }
        }

        /// <summary>
        /// Obtiene o establece el valor de la frase
        /// </summary>
        [DataMember]
        public string Frase 
        {
            get { return frase; }
            set { frase = value; }
        }

        /// <summary>
        /// Obtiene o establece el campo propio
        /// </summary>
        [DataMember]
        public string Propio
        {
            get { return propio; }
            set { propio = value; }
        }

        /// <summary>
        /// Obtiene o establece el nivel
        /// </summary>
        [DataMember]
        public int? CoNivel 
        { 
            get{return coNivel;}
            set { coNivel = value; ;} 
        }

        /// <summary>
        /// Obtiene o establece el nick de la persona
        /// </summary>
        [DataMember] 
        public string Nick 
        {
            get { return nick; }
            set { nick = value; }
        }
        
        /// <summary>
        /// Obtiene o establece el valor de la ultima conexion
        /// </summary>
        [DataMember]
        public DateTime? UltimaConexion
        {
            get { return ultimaConexion; }
            set { ultimaConexion = value; }
        }

        /// <summary>
        /// Obtiene o establece el valor de la imagen
        /// </summary>
        [DataMember]
        public byte[] Imagen 
        {
            get { return imagen; }
            set { imagen = value; }
        }

        /// <summary>
        /// Obtiene o establece el valor del userhash del usuario(referente a la contraseña
        /// previamente encriptada)
        /// </summary>
        [DataMember]
        public string Userhash 
        {
            get { return userhash; }
            set { userhash = value; }
        }

        /// <summary>
        /// Obtiene o establece el nombre de la persona
        /// </summary>
        [DataMember]
        public string Nombre
        {
            get { return nombre; }
            set { nombre = value; }
        }

        /// <summary>
        /// Obtiene o establece el primer apellido de Pefil
        /// </summary>
        [DataMember]
        public string Apellido1
        {
            get { return apellido1; }
            set { apellido1 = value; }
        }

        /// <summary>
        /// Obtiene o establece el segundo apellido del Perfil
        /// </summary>
        [DataMember]
        public string Apellido2
        {
            get { return apellido2; }
            set { apellido2 = value; }
        }

        /// <summary>
        /// Obtiene o establece el valor del email
        /// </summary>
        [DataMember]
        public string Email
        {
            get { return email; }
            set { email = value; }
        }

        /// <summary>
        /// Obtiene o establece el valor de la fecha de nacimiento
        /// </summary>
        [DataMember]
        public DateTime? FechaNacimiento
        {
            get { return fechaNacimiento; }
            set { fechaNacimiento = value; }
        }

        /// <summary>
        /// Obtiene o establece el valor del dni
        /// </summary>
        [DataMember]
        public string Dni
        {
            get { return dni; }
            set { dni = value; }
        }

        /// <summary>
        /// Obtiene o establece el valor del codigo del profesor
        /// </summary>
        [DataMember]
        public int? CoProfesor
        {
            get { return coProfesor; }
            set { coProfesor = value; }
        }

        /// <summary>
        /// Obtiene o establece el administrador
        /// </summary>
        [DataMember]
        public int? EsAdministrador
        {
            get { return esAdministrador; }
            set { esAdministrador = value; }
        }

        /// <summary>
        /// Obtiene o establece el nombre de la imagen
        /// </summary>
        [DataMember]
        public string NombreImagen
        {
            get { return nombreImagen; }
            set { nombreImagen = value; }
        }

        /// <summary>
        /// Obtiene o establece el nombre de la imagen
        /// </summary>
        [DataMember]
        public int? CoAlumno
        {
            get { return coAlumno; }
            set { coAlumno = value; }
        }

        #endregion

    }
}
